package com.bnz.test;

import com.bnz.dao.StudentDao;
import com.bnz.entity.Student;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import javax.annotation.Resource;


@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring/applicationContext.xml")
public class SpText {

    // 这两个来自于spring5
    // 从spring容器中取出bean
    // 单使用@Autowired  如果有相同的bean，就会报错（一个Dao被两个类实现，有同样的方法）
    // 以下两个注解同时写，表示根据名字获取
    @Autowired  // 根据类型获取bean
    @Qualifier("studentDaoImpl_02") // 根据名字获取bean(要和@Autowired同时使用)
    private StudentDao studentDao;

    // 来自于jdk8
    // 根据名字获取spring容器中的bean
    // 如果获取的bean只有一个，直接拿，有多个同类型的，按名字
    @Resource(name = "studentDao1")
    private StudentDao studentDao_s;

    /**
     * 1、按照名称获取bean（spring5）
     */
    @Test
    public void test01(){
        Student student = new Student();
        studentDao.add(student);
    }

    /**
     * 2、按照名称获取bean（jdk8）
     */
    @Test
    public void test02(){
        Student student = new Student();
        studentDao_s.add(student);
    }

}
